//
//     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
//     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR
//     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION
//     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION
//     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS
//     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
//     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
//     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY
//     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
//     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
//     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
//     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
//     FOR A PARTICULAR PURPOSE.
//
//     (c) Copyright 2005 Xilinx, Inc.
//     All rights reserved.
//
/*
-------------------------------------------------------------------------------
   Title      : AUDIO FILTER DEMO DESIGN FOR THE XUP-V2Pro
   Project    : XUP-V2Pro 
-------------------------------------------------------------------------------
   File       : CHAR_GEN_ROM.v
   Company    : Xilinx, Inc.
   Created    : 2001/07/17
   Last Update: 2005/01/23
   Copyright  : (c) Xilinx Inc, 2005
-------------------------------------------------------------------------------
   Uses       : 
-------------------------------------------------------------------------------
   Used by    : CHARACTER_MODE.v
-------------------------------------------------------------------------------
   Description: This module creates a 2k x 8 ROM that is used for video character generation.
			The ROM contents are also defined in the CHAR_GEN_ROM.ucf file.

			The charcter generator defines a 8 x 8 block of pixels used for ASCII characters,
			line graphics and Xilinx logo. The least significant 3 address bits define the line
			within the character block and the most significant 8 bits define the specific character.
			
			If the user wishes to extend the character set then the "INIT_20 - INIT_3F" values must be
			defined.

Code 	  00h  	defines a solid block
Codes 01h-04h	defines the Xilinx logo
Codes 05h-1Fh	defines line graphics		
Codes 20h-7Fh 	defines the ASCII characters
Codes 80h-FFh  	user defined characters

-------------------------------------------------------------------------------
   Revisions  :
   Date        Version  Author  	  Description
   2001/07/17  1.0      Ballantyne    Initial Release

-------------------------------------------------------------------------------
*/


module CHAR_GEN_ROM (pixel_clock,address,data);
input			pixel_clock;
input [10:0]	address;
output [7:0] 	data;
wire           	pixel_clock;
wire  [10:0]   	address;
wire   [7:0]   	data;

// instantiate the RAM used as a ROM

RAMB16_S9 CHARACTER_GEN_ROM (
.DO(data),
.DOP(),
.ADDR(address[10:0]),
.DI(8'h00),
.DIP(1'b0),
.EN(1'b1),
.CLK(pixel_clock),
.WE(1'b0),				// no write enable
.SSR(1'b0)
);

// synthesis translate_off
defparam CHARACTER_GEN_ROM .INIT_00 = 256'h1F3E7CF87C3E1F07C0000000040E1F3F071F3E7CF87C3E1FFFFFFFFFFFFFFFFF;
defparam CHARACTER_GEN_ROM .INIT_01 = 256'hFF8080808080808001010101010101FF80808080808080FF3F1F0E04000000C0;
defparam CHARACTER_GEN_ROM .INIT_02 = 256'h01010101FF01010110101010101010FF10101010FF101010FF01010101010101;
defparam CHARACTER_GEN_ROM .INIT_03 = 256'h00102040FF40201000080402FF02040880808080FF808080FF10101010101010;
defparam CHARACTER_GEN_ROM .INIT_04 = 256'h00000000FF0000000000000000FF0000000000000000FF0000000000000000FF;
defparam CHARACTER_GEN_ROM .INIT_05 = 256'hFF0000000000000000FF0000000000000000FF0000000000000000FF00000000;
defparam CHARACTER_GEN_ROM .INIT_06 = 256'h1010101010101010202020202020202040404040404040408080808080808080;
defparam CHARACTER_GEN_ROM .INIT_07 = 256'h0101010101010101020202020202020204040404040404040808080808080808;
defparam CHARACTER_GEN_ROM .INIT_08 = 256'h0028287C287C2828000000000028282800100000101010100000000000000000;
defparam CHARACTER_GEN_ROM .INIT_09 = 256'h0000000000201030003448542050483000064620100864600010781438503C10;
defparam CHARACTER_GEN_ROM .INIT_0A = 256'h000010107C101000000010543854100000201008080810200008102020201008;
defparam CHARACTER_GEN_ROM .INIT_0B = 256'h00004020100804000030300000000000000000007C0000002010300000000000;
defparam CHARACTER_GEN_ROM .INIT_0C = 256'h003844040810087C007C201008044438003810101010301000384464544C4438;
defparam CHARACTER_GEN_ROM .INIT_0D = 256'h002020201008047C0038444478402018003844040478407C0008087C48281808;
defparam CHARACTER_GEN_ROM .INIT_0E = 256'h20103000003030000030300000303000003008043C4444380038444438444438;
defparam CHARACTER_GEN_ROM .INIT_0F = 256'h001000100804443800201008040810200000007C007C00000008102040201008;

defparam CHARACTER_GEN_ROM .INIT_10 = 256'h003844404040443800784444784444780044447C444444380038545434044438;
defparam CHARACTER_GEN_ROM .INIT_11 = 256'h003C44445C404438004040407840407C007C40407840407C0070484444444870;
defparam CHARACTER_GEN_ROM .INIT_12 = 256'h0044485060504844003048080808081C0038101010101038004444447C444444;
defparam CHARACTER_GEN_ROM .INIT_13 = 256'h00384444444444380044444C546444440044444454546C44007C404040404040;
defparam CHARACTER_GEN_ROM .INIT_14 = 256'h007804043840403C004448507844447800344854444444380040404078444478;
defparam CHARACTER_GEN_ROM .INIT_15 = 256'h002854545444444400102844444444440038444444444444001010101010107C;
defparam CHARACTER_GEN_ROM .INIT_16 = 256'h0038202020202038007C40201008047C00101010284444440044442810284444;
defparam CHARACTER_GEN_ROM .INIT_17 = 256'h007C000000000000000000000044281000380808080808380000040810204000;
defparam CHARACTER_GEN_ROM .INIT_18 = 256'h00384440403800000078444464584040003C443C043800000000000000081020;
defparam CHARACTER_GEN_ROM .INIT_19 = 256'h38043C44443C000000202020702024180038407C44380000003C44444C340404;
defparam CHARACTER_GEN_ROM .INIT_1A = 256'h0048506050484040304808081800080000381010103010100044444464584040;
defparam CHARACTER_GEN_ROM .INIT_1B = 256'h0038444444380000004444446458000000444454546800000038101010101030;
defparam CHARACTER_GEN_ROM .INIT_1C = 256'h0078043840380000004040406458000004043C4C340000004040407844780000;
defparam CHARACTER_GEN_ROM .INIT_1D = 256'h0028545444440000001028444444000000344C44444400001824202070202000;
defparam CHARACTER_GEN_ROM .INIT_1E = 256'h0008101020101008007C2010087C000038043C44440000000044281028440000;
defparam CHARACTER_GEN_ROM .INIT_1F = 256'hAA55AA55AA55AA550000000C9260000000201010081010200010101010101010;

defparam CHARACTER_GEN_ROM .INIT_20 = 256'h00000C183060C0800000C06030180C07000080C06030180C0303070C183060C0; //DOUBLE HIGH DOUBLE WIDE "X"
defparam CHARACTER_GEN_ROM .INIT_21 = 256'h0000F8FC0C0C0C0C00003F7FC0C0C0C00C0C0C0C0C0C0C0CC0C0C0C0C0C0C0C0; //DOUBLE HIGH DOUBLE WIDE "U"
defparam CHARACTER_GEN_ROM .INIT_22 = 256'h00000000000000000000C0C0C0C0C0C0F0F80C0C0C0CF8F0FFFFC0C0C0C0FFFF; //DOUBLE HIGH DOUBLE WIDE "P"
defparam CHARACTER_GEN_ROM .INIT_23 = 256'h00000000000000000000000000000000FCFC000000000000FFFF000000000000; //DOUBLE HIGH DOUBLE WIDE "-"
defparam CHARACTER_GEN_ROM .INIT_24 = 256'h00000000C0C03030000003030C0C30300C0C0C0C0C0C0C0CC0C0C0C0C0C0C0C0; //DOUBLE HIGH DOUBLE WIDE "V"
defparam CHARACTER_GEN_ROM .INIT_25 = 256'h0000FCFC000000000000FFFF30300F0FF0F80C0C0C0CF8F000000000C0C07F3F; //DOUBLE HIGH DOUBLE WIDR "2"
defparam CHARACTER_GEN_ROM .INIT_26 = 256'h00000000000000000000C0C0C0C0C0C00C0CFCF800000000C0C0FFFF00000000; //DOUBLE HIGH DOUBLE WIDE "r"
defparam CHARACTER_GEN_ROM .INIT_27 = 256'h0000F0F80C0C0C0C00003F7FC0C0C0C00C0CF8F000000000C0C07F3F00000000; //DOUBLE HIGH DOUBLE WIDE "o"
defparam CHARACTER_GEN_ROM .INIT_28 = 256'h0000F0F80C0C0C0C0000FFFFC0C0C0C00C0C0C0C0C0CF8F0C0C0C0C0C0C0FFFF; //DOUBLE HIGH DOUBLE WIDE "D"
defparam CHARACTER_GEN_ROM .INIT_29 = 256'h0000F0F00000FCFC00003F7FC0C0FFFF0C0CFCF800000000C0C07F3E00000000; //DOUBLE IHGH DOUBLE WIDE "e"
defparam CHARACTER_GEN_ROM .INIT_2A = 256'h00000000C0C03030000003030C0C30300C0C0C0C00000000C0C0C0C000000000; //DOUBLE HIGH DOUBLE WIDE "v"
defparam CHARACTER_GEN_ROM .INIT_2B = 256'h0000FCFC000000000000FFFF030303030000000000000000030303030303FFFF; //DOUBLE HIGH DOUBLE WIDE "l"
defparam CHARACTER_GEN_ROM .INIT_2C = 256'h00000000F0F80C0CC0C0C0C0FFFFC0C00C0CF8F000000000C0C0FFFF00000000; //DOUBLE HIGH DOUBLE WIDE "p"
defparam CHARACTER_GEN_ROM .INIT_2D = 256'h00000C0C0C0C0C0C0000C3C3C3C3C3C30C0CF8F000000000C3C3FCFC00000000; //DOUBLE HIGH DOUBLE WIDE "m"
defparam CHARACTER_GEN_ROM .INIT_2E = 256'h00000C0C0C0C0C0C0000C0C0C0C0C0C00C0CF8F000000000C0C0FFFF00000000; //DOUBLE HIGH DOUBLE WIDE "n"
defparam CHARACTER_GEN_ROM .INIT_2F = 256'h0000FCFC0000000000000103030303030000FCFC000000000303FFFF03030300; //DOUBLE HIGH DOUBLE WIDE "t"
		
defparam CHARACTER_GEN_ROM .INIT_30 = 256'h0000F0F80C0C0C0C00003F7FC0C00000F8F000000C0CF8F03F7FC0C0C0C07F3F; //DOUBLE HIGH DOUBLE WIDE "S"
defparam CHARACTER_GEN_ROM .INIT_31 = 256'hF0F80C0CFCFC0C0C3F3F00003F7FC0C00C0C0C0C00000000C0C0C0C000000000; //DOUBLE HIGH DOUBLE WIDE "y" 
defparam CHARACTER_GEN_ROM .INIT_32 = 256'h0000F0F80C0CF8F00000FFFF00003F7F0000FCFC00000000C0C07F3F00000000; //DOUBLE HIGH DOUBLE WIDE "s" 
defparam CHARACTER_GEN_ROM .INIT_33 = 256'h00000C0C0C0CFCFC0000C0C0C0C0FFFF0C0C3030C0C00000C0C030300C0C0303; //DOUBLE HIGH DOUBLE WIDE "A"
defparam CHARACTER_GEN_ROM .INIT_34 = 256'h0000F0F80C0C0C0C00003F7FC0C0C0C00C0C0C0C00000000C0C0C0C000000000; //DOUBLE HIGH DOUBLE WIDE "u"
defparam CHARACTER_GEN_ROM .INIT_35 = 256'h0000FCFC0C0C0C0C00003F7FC0C0C0C00C0CFCFC0C0C0C0CC0C07F3F00000000; //DOUBLE HIGH DOUBLE WIDE "d"
defparam CHARACTER_GEN_ROM .INIT_36 = 256'h0000FCFC000000000000FFFF0303030300000000000000000303FFFF00000303; //DOUBLE HIGH DOUBLE WIDE "i"
defparam CHARACTER_GEN_ROM .INIT_37 = 256'h00000000000000000000C0C0C0C0C0C0F0F000000000FCFCFFFFC0C0C0C0FFFF; //DOUBLE HIGH DOUBLE WIDE "F"
defparam CHARACTER_GEN_ROM .INIT_38 = 256'h0000FCFC0C0CFCFC00003F3FC0C03F3F0C0CF8F00000000000003F3F00000000; //DOUBLE HIGH DOUBLE WIDE "a"
defparam CHARACTER_GEN_ROM .INIT_39 = 256'h0000000000000000000000000000000000000000000000000000000000000000;
defparam CHARACTER_GEN_ROM .INIT_3A = 256'h0000000000000000000000000000000000000000000000000000000000000000;
defparam CHARACTER_GEN_ROM .INIT_3B = 256'h0000000000000000000000000000000000000000000000000000000000000000;
defparam CHARACTER_GEN_ROM .INIT_3C = 256'h0000000000000000000000000000000000000000000000000000000000000000;
defparam CHARACTER_GEN_ROM .INIT_3D = 256'h0000000000000000000000000000000000000000000000000000000000000000;
defparam CHARACTER_GEN_ROM .INIT_3E = 256'h0000000000000000000000000000000000000000000000000000000000000000;
defparam CHARACTER_GEN_ROM .INIT_3F = 256'h0000000000000000000000000000000000000000000000000000000000000000;
		



// synthesis translate_on


endmodule//CHAR_GEN_ROM


module RAMB16_S9(DO, DOP, ADDR, DI, DIP, EN, CLK, WE, SSR); // synthesis syn_black_box
output [7:0] DO;
output [0:0] DOP;
input [10:0] ADDR;
input [7:0] DI;
input [0:0] DIP;
input EN;
input CLK;
input WE;
input SSR;
endmodule


